/**
 * @brief rappresenta una struttura contenente tutti i dati di configurazione relativi
 *
 *  @date Jun 27, 2013
 *  @author koldar
 */

#ifndef LTMCONFIGURATION_H_
#define LTMCONFIGURATION_H_

//TODO un giorno STMCOnfiguration dovrebbe stare in un file separato!
#include "stm.h"

//TODO documentazione
typedef struct LTMConfiguration {
	//TODO documentazione
	char* constructiveDrawingPath;
	//TODO non sono sicuro che vada qua
	//TODO documentazione
	int vehicleNumber;
	//TODO documentazione
	pSTMConfiguration stmConfiguration;
} LTMConfiguration;

//TODO documentazione
typedef LTMConfiguration* PLTMConfiguration;

/**inizializza una nuova struttura di configurazione contenente i dati relativi solo al livello LTM
 *
 * \pre
 *  \li configuration non NULL
 * \post
 *  \li in memoria viene allocata una nuova struttura LTMConfiguration da <b>deallocare manualmente</b>
 *
 * @param configuration la struttura di configurazione dell'intero algoritmo ALG
 * @return un puntatore ad una struttura LTMConfigurartion
 */
PLTMConfiguration initLTMConfiguration(PalgConfiguration configuration);

/**dealloca la struttura di configurazione passata
 *
 * \pre
 *  \li obj non NULL
 * \post
 *  \li la struttura LTMConfiguration viene deallocata
 *  \li viene evocato il metodo freeSTMConfiguration() per deallocare le configurazioni di STMConfiguration
 *
 * @param obj la struttura da deallocare
 */
void freeLTMConfiguration(PLTMConfiguration obj);

#endif /* LTMCONFIGURATION_H_ */
